package com.gradumate.server.alfresco;

import java.util.logging.Logger;

import com.gradumate.server.AlfrescoInfo;
import com.gradumate.server.HttpClient;
import com.gradumate.shared.Gebruiker;

/**
 * @author Hugo Zonderland
 * 
 *         Klasse haalt de ticket van een gebruiker op
 * 
 */
public class TicketService {

	// Http communicatie
	private static HttpClient http = new HttpClient();

	// Logger
	private static final Logger log = Logger.getLogger(TicketService.class.getName());

	/**
	 * Haalt de ticket van de Gebruiker op
	 * 
	 * @param Gebruiker
	 *            van de gebruiker waarvoor de ticket word bepaald
	 * @return String met daarin de ticket
	 */
	public static String getGebruikerTicket(Gebruiker gebruiker) {
		String ticketUrl= "";
		//TODO Voor elke gebruiker de juiste URL bepalen om de ticket op te halen

		// Url waar de ticket word opgehaald.
		if(gebruiker.getType() == 1  ){  //type 1 is STUDENT
			ticketUrl = AlfrescoInfo.TICKET_URL + "?u="
			+ gebruiker.getGebruikerEmail() + "&pw="
			+ gebruiker.getVoornaam().toLowerCase() + gebruiker.getAchternaam().toLowerCase().replace(" ", "") + gebruiker.getInschrijfjaar();
		}	
		log.info("Ticket bepalen voor " + gebruiker.getGebruikerEmail());

		return getTicket(ticketUrl);
	}

	/**
	 * Haalt een ticket op voor de Admin account
	 * @param Gebruiker admin account
	 * @return String met daarin de ticket
	 */
	public static String getAdminTicket(Gebruiker gebruiker) {
		// Url waar de ticket word opgehaald.
		String ticketUrl = AlfrescoInfo.TICKET_URL + "?u="
		+ gebruiker.getVoornaam() + "&pw="
		+ gebruiker.getVoornaam();

		log.info("Ticket bepalen voor admin");

		return getTicket(ticketUrl);
	}

	/**
	 * Doet de aanvraag op de Alfresco server en stuurt dan de ticket terug
	 * @param String ticketUrl URL waar de aanvraag gedaan word
	 * @return String met daarin de ticket die is opgehaald uit Alfresco
	 */
	private static String getTicket(String ticketUrl) {
		log.info("Url: " + ticketUrl);

		String ticket;

		// XML die opgehaald word van de remote host
		String ticketXML = http.getFromUrl(ticketUrl);
		log.info("XML: " + ticketXML);

		//1e gedeelte van de string verwijderen t/m het ">" teken 
		ticketXML = ticketXML.substring(46); //46 is index van het ">" teken
		ticket = ticketXML.replace("</ticket>", "");  //laatste gedeelte van de string verwijderen

		return ticket;
	}
}
